#ifndef _PROTO_H_
#define _PROTO_H_

#include <site_type.h>

#define DEFAULT_MGROUP "224.2.2.2"
#define DEFAULT_RCVPORT "1989"
#define CHNNR   100 // 频道数
#define LSITCHNID   0   // 节目单频道ID
#define MINCHNID 1  // 媒体频道起始id号
#define MAXCHNID (MINCHNID+CHNNR-1)

#define MSG_LIST_MAX    (65536-20-8)
#define MAX_ENTRY   (MSG_LIST_MAX-sizeof(chnid_t))

#define MSG_CHANNEL_MAX (65536-20-8)    // 20为推荐包的长度，8为udp的报头长度
#define MSG_MAX_DATA (MSG_CHANNEL_MAX-sizeof(chnid_t))  // 数据部分
struct msg_channel_st { // 每个频道数据(频道号+媒体数据)
    chnid_t chnid;  // 频道号，介于MINCHNID~MAXCHNID
    uint8_t data[1];    // 变长成员
}__attribute__((packed));   // 不使用编译器自动对齐


struct msg_listentry_st {   // 每个频道概览信息
    chnid_t chnid;
    uint16_t len;   // 此结构体长度
    uint8_t desc[1];
}__attribute__((packed));
struct msg_list_st {    // 频道信息总览
    chnid_t chnid;  // 必须为LSITCHNID
    struct msg_listentry_st entry[1];   // 变长成员
}__attribute__((packed)); 

#endif